package Control;

import Model.Cliente;
import Model.Produto;
import Model.Venda;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;

public class VendaControl {
    
    private ArrayList<Venda> venda = null;
    private ArrayList<Produto> pd = null;
    
    public VendaControl(){
        venda = new ArrayList<>();
        pd = new ArrayList<>();
        carregaDados();
    }
    
    public void carregaDados(){
        BufferedReader br = null;
        String conteudo = null;
        try {
            br = new BufferedReader(new FileReader("./dados/venda.txt"));
            while((conteudo = br.readLine()) != null){
                String[] partes = conteudo.split("#");
                String[] partes3 = partes[0].split(",");
                Venda vn = new Venda(new Cliente(partes3[0], partes3[1], partes3[2]));//PASSA O OBJETO CLIENTE COM O NOME, CELULAR E ENDEREÇO
                String[] partes2 = partes[1].split("-");
                for(int i=0; i<partes2.length; i++){
                    vn.adicionaProduto(new Produto(partes2[i], Double.parseDouble(partes2[i+1]), Integer.parseInt(partes2[i+2])));//ADICIONA OBJETOS PRODUTOS COM NOME, VALOR E QUANTIDADE
                    i+=2;
                }
                venda.add(vn);
            }
            br.close();
        } catch(Exception e) {
          // System.out.println(e.getMessage());
        }
    }
    
    public void gravaDados(){
        BufferedWriter bw = null; 
        try {
            bw = new BufferedWriter(new FileWriter("./dados/venda.txt"));
            for(Venda vn : venda){
                bw.write(vn.dadosObjeto());
                bw.newLine();
            }
            bw.close();
        } catch(Exception e) {
        }
    }
    
    public void addProduto(int index, int qtd){
        Produto aux = new ProdutoControl().indiceProduto(index);
        Produto def = new Produto(aux.getNome(), aux.getValor()+(aux.getValor()*0.22), qtd);
        pd.add(def);
    }
    
    public ArrayList<Produto> produtosEstoque(){
        ProdutoControl pControl = new ProdutoControl();
        return pControl.getProduto();
    }
    
    public Produto getProduto(int index){
        ProdutoControl pControl = new ProdutoControl();
        return pControl.getProduto().get(index);
    }
            
    public void atualizaEstoque(){
        ProdutoControl pctrl = new ProdutoControl();
        for(Produto pdt : pd)
           pctrl.atualizaEstoque(pdt);
    }
    
    public boolean qtdValido(int index){
        int qtd = new ProdutoControl().tamQtd(index);
        if(qtd<=0)
            return false;
        else 
            return true;          
    }
    
    public void cadastraVenda(Cliente clt){
        Venda vd = new Venda(clt);
        vd.setProdutos(pd);
        atualizaEstoque();
        venda.add(vd);
        gravaDados();
    }
    
    public ArrayList<Produto> getProdutos(){
        return pd;
    }
    
    public ArrayList<Venda> getVenda(){
        return venda;
    }
}
